home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 12 / Cream of the Crop 12 (Part II) / Cream of the Crop 12 (Part II).iso / OS2 / VD08SMP.ZIP / usr / samples / address / controller.m < prev    next >
Encoding:
Text File  |  1996-02-13  |  6.1 KB  |  222 lines

  1. #include "Controller.h"
  2. #include "address.h"
  3.  
  4. @implementation Controller
  5.  
  6. - init
  7. {
  8.   insertRecord = [[StdDialog alloc] initWithId: IDD_INSREP];
  9.   replaceRecord = [[StdDialog alloc] initWithId: IDD_INSREP];
  10.   infoRecord = [[StdDialog alloc] initWithId: IDD_INFO];
  11.  
  12.   [insertRecord setText: "Insert new Record"];
  13.   [replaceRecord setText: "Replace existing Record"];
  14.  
  15.   [insertRecord createObjects];
  16.   [replaceRecord createObjects];
  17.   [infoRecord createObjects];
  18.  
  19.   insertName = [insertRecord findFromID: IDD_NAMEENTRY];
  20.   insertAddress = [insertRecord findFromID: IDD_ADDRESSENTRY];
  21.   insertPhone = [insertRecord findFromID: IDD_PHONEENTRY];
  22.   insertFax = [insertRecord findFromID: IDD_FAXENTRY];
  23.   insertEMail = [insertRecord findFromID: IDD_EMAILENTRY];
  24.   replaceName = [replaceRecord findFromID: IDD_NAMEENTRY];
  25.   replaceAddress = [replaceRecord findFromID: IDD_ADDRESSENTRY];
  26.   replacePhone = [replaceRecord findFromID: IDD_PHONEENTRY];
  27.   replaceFax = [replaceRecord findFromID: IDD_FAXENTRY];
  28.   replaceEMail = [replaceRecord findFromID: IDD_EMAILENTRY];
  29.   infoName = [infoRecord findFromID: IDD_NAMEENTRY];
  30.   infoAddress = [infoRecord findFromID: IDD_ADDRESSENTRY];
  31.   infoPhone = [infoRecord findFromID: IDD_PHONEENTRY];
  32.   infoFax = [infoRecord findFromID: IDD_FAXENTRY];
  33.   infoEMail = [infoRecord findFromID: IDD_EMAILENTRY];
  34.  
  35.   database = [[DBFile alloc] init: "address.dbf"];
  36.   recordList = [[DBList alloc] initForEntity: database];
  37.  
  38.   return self;
  39. }
  40.  
  41. - free
  42. {
  43.   [database free];
  44.   [insertRecord free];
  45.   [replaceRecord free];
  46.   [infoRecord free];
  47.   return [super free];
  48. }
  49.  
  50. - readList: sender;
  51. {
  52.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  53.   int i;
  54.  
  55.   [recordList fetchAllRecords: nil];
  56.  
  57.   for (i = 0;i < [recordList count];i++) {
  58.     [nameListBox insertItem: LIT_END
  59.                  text: [[[recordList objectAt: i] field: 0] stringValue]];
  60.   }
  61.  
  62.   return self;
  63. }
  64.  
  65. - insert: sender
  66. {
  67.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  68.   char    *nameBuffer;
  69.   char    *addressBuffer;
  70.   char    *phoneBuffer;
  71.   char    *faxBuffer;
  72.   char    *emailBuffer;
  73.  
  74.   [database clear];
  75.  
  76.   [insertName setText: ""];
  77.   [insertAddress setText: ""];
  78.   [insertPhone setText: ""];
  79.   [insertFax setText: ""];
  80.   [insertEMail setText: ""];
  81.  
  82.   [insertRecord runModalFor: sender];
  83.  
  84.   if ([insertRecord result] == DID_OK) {
  85.     nameBuffer = [insertName text: NULL];
  86.     addressBuffer = [insertAddress text: NULL];
  87.     phoneBuffer = [insertPhone text: NULL];
  88.     faxBuffer = [insertFax text: NULL];
  89.     emailBuffer = [insertEMail text: NULL];
  90.  
  91.     [[database field: 0] setStringValue: nameBuffer];
  92.     [[database field: 1] setStringValue: addressBuffer];
  93.     [[database field: 2] setStringValue: phoneBuffer];
  94.     [[database field: 3] setStringValue: faxBuffer];
  95.     [[database field: 4] setStringValue: emailBuffer];
  96.  
  97.     [database append];
  98.     [recordList addObject: [[DBRecord alloc] initForEntity: database]];
  99.  
  100.     [nameListBox insertItem: LIT_END text: nameBuffer];
  101.  
  102.     free (nameBuffer);
  103.     free (addressBuffer);
  104.     free (phoneBuffer);
  105.     free (faxBuffer);
  106.     free (emailBuffer);
  107.   }
  108.  
  109.   return self;
  110. }
  111.  
  112. - replace: sender
  113. {
  114.   ListBox  *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  115.   DBRecord *record
  116.   SHORT     selected = [nameListBox selected];
  117.   char     *nameBuffer;
  118.   char     *addressBuffer;
  119.   char     *phoneBuffer;
  120.   char     *faxBuffer;
  121.   char     *emailBuffer;
  122.  
  123.   if (selected < 0)
  124.     return nil;
  125.  
  126.   record = [recordList objectAt: selected];
  127.  
  128.   [replaceName setText: [[record field: 0] stringValue]];
  129.   [replaceAddress setText: [[record field: 1] stringValue]];
  130.   [replacePhone setText: [[record field: 2] stringValue]];
  131.   [replaceFax setText: [[record field: 3] stringValue]];
  132.   [replaceEMail setText: [[record field: 4] stringValue]];
  133.  
  134.   [replaceRecord runModalFor: sender];
  135.  
  136.   if ([replaceRecord result] == DID_OK) {
  137.     nameBuffer = [replaceName text: NULL];
  138.     addressBuffer = [replaceAddress text: NULL];
  139.     phoneBuffer = [replacePhone text: NULL];
  140.     faxBuffer = [replaceFax text: NULL];
  141.     emailBuffer = [replaceEMail text: NULL];
  142.  
  143.     [[record field: 0] setStringValue: nameBuffer];
  144.     [[record field: 1] setStringValue: addressBuffer];
  145.     [[record field: 2] setStringValue: phoneBuffer];
  146.     [[record field: 3] setStringValue: faxBuffer];
  147.     [[record field: 4] setStringValue: emailBuffer];
  148.  
  149.     [record replace];
  150.  
  151.     [nameListBox deleteItem: selected];
  152.     [nameListBox insertItem: selected text: nameBuffer];
  153.  
  154.     free (nameBuffer);
  155.     free (addressBuffer);
  156.     free (phoneBuffer);
  157.     free (faxBuffer);
  158.     free (emailBuffer);
  159.   }
  160.  
  161.   return self;
  162. }
  163.  
  164. - info: sender
  165. {
  166.   ListBox  *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  167.   SHORT     selected = [nameListBox selected];
  168.   DBRecord *record;
  169.  
  170.   if (selected < 0)
  171.     return nil;
  172.  
  173.   record = [recordList objectAt: selected];
  174.  
  175.   [infoName setText: [[record field: 0] stringValue]];
  176.   [infoAddress setText: [[record field: 1] stringValue]];
  177.   [infoPhone setText: [[record field: 2] stringValue]];
  178.   [infoFax setText: [[record field: 3] stringValue]];
  179.   [infoEMail setText: [[record field: 4] stringValue]];
  180.  
  181.   [infoRecord runModalFor: sender];
  182.  
  183.   return self;
  184. }
  185.  
  186. - delete: sender
  187. {
  188.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  189.   SHORT selected = [nameListBox selected];
  190.   char  numberBuffer[6];
  191.   long  numberOfRecord;
  192.   char *nameBuffer;
  193.  
  194.   if (selected < 0)
  195.     return nil;
  196.  
  197.   if (WinMessageBox (HWND_DESKTOP,[sender window],
  198.              "Do you really want to delete the selected Item?",
  199.              "Addresses",
  200.              0,MB_YESNO | MB_QUERY) == MBID_YES) {
  201.     numberOfRecord = atoi(numberBuffer);
  202.     
  203.     [database readRecord: [[recordList objectAt: selected] recNo]];
  204.  
  205.     [nameListBox deleteItem: selected];
  206.     [database delete];
  207.     [recordList removeObjectAt: selected];
  208.   }
  209.  
  210.   return self;
  211. }
  212.  
  213. - windowDidResize: sender
  214. {
  215.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  216.  
  217.   [nameListBox setSize: 0:0:[sender width]:[sender height]];
  218.   return self;
  219. }
  220.  
  221. @end
  222.